home *** CD-ROM | disk | FTP | other *** search
/ Languguage OS 2 / Languguage OS II Version 10-94 (Knowledge Media)(1994).ISO / language / embedded / mcu / float09.arc / DISPAT.SA < prev    next >
Text File  |  1987-03-04  |  5KB  |  227 lines

  1.  NAM DISPCH
  2.  TTL  DISPATCH OPERATION THROUGH THE FUNCTION TABLES
  3. *
  4. * LINKING LOADER DEFINITONS
  5. *
  6.   XDEF    DISPAT
  7. *
  8.   XREF    FMUL
  9.   XREF    FADD,CHKZER,CHKINF
  10.   XREF    FDIV,DIVZER
  11.   XREF    FREM
  12.   XREF    FSQRT,SQINCK
  13.   XREF    GETINT
  14.   XREF    MAGCMP,CMPZER,CMPINF,NANCMP,INFAR1
  15.   XREF    INFAR2,ARG1UN,ARG2UN,BOTHUN
  16.   XREF    FFIX,BIGINT,FIXNAN,FIXZER
  17.   XREF    BDCNVT,OUTNDC
  18.   XREF    FMOVE,MOVUN
  19.   XREF    FABS,FNEG
  20.   XREF    RTAR1,RTAR2,RTNAN,RTINF,RTDNAN
  21.   XREF    RTZERO,NAN1,NAN4,NAN9,NAN10
  22.   XREF    ROMSTR
  23.   XREF    DECBIN,FLOAT
  24. *
  25. * REVISION HISTORY:
  26. *
  27. *  DATE     PROGRAMMER       REASON
  28. *
  29. *  01.JUL.80    G. STEVENS       ORIGINAL
  30. *  28.JUL.80    G. STEVENS       TRANSPOSE TABLES
  31. *  18.AUG.80    G. STEVENS       FIX COMPARE TABLES FOR UN ZERO
  32. *
  33.  PAGE
  34. ***************************************************
  35. *
  36. *    DISPAT --
  37. *      THIS SUBROUTINE USES THE FUNCTION CODE TO
  38. *    SELECTION A FUNCTION TABLE. IT THEN USES THE TYPES
  39. *    OF THE ARGUMENTS TO JUMP THROUGH THE ADDRESSES IN
  40. *    THE FUNCTION TABLE TO THE PROPER SUBROUTINE TO
  41. *    PERFORM THE FUNCTION.
  42. *
  43. *      NO REGISTERS ARE PRESERVED; ALL RELEVANT STATE
  44. *    IS STORED IN THE STACK FRAME.
  45. *
  46. ************************
  47. *
  48. *    ADRTBL --
  49. *     THIS MACRO CREATES A TABLE OF ADDRESSES RELATIVE TO
  50. *    THE START OF THE ROM. IT CAN BE CALLED WITH FROM ONE TO
  51. *    FIVE ARGUMENTS, WHICH ARE THE ENTRY POINTS TO TABLES
  52. *    OR ROUTINES IN THE ROM.
  53. *
  54. ADRTBL MACR
  55.  IFEQ NARG-5
  56.   FDB \0-ROMSTR,\1-ROMSTR,\2-ROMSTR,\3-ROMSTR,\4-ROMSTR
  57.   EXIT
  58.  ENDC
  59.  IFEQ NARG-4
  60.   FDB  \0-ROMSTR,\1-ROMSTR,\2-ROMSTR,\3-ROMSTR
  61.   EXIT
  62.  ENDC
  63.  IFEQ NARG-3
  64.   FDB  \0-ROMSTR,\1-ROMSTR,\2-ROMSTR
  65.   EXIT
  66.  ENDC
  67.  IFEQ NARG-2
  68.   FDB  \0-ROMSTR,\1-ROMSTR
  69.   EXIT
  70.  ENDC
  71.  IFEQ NARG-1
  72.   FDB  \0-ROMSTR
  73.   EXIT
  74.  ENDC
  75.  ENDM
  76. *
  77. *    THE FOLLOWING TABLE IS INDEXED BY THE (FUNCTION NUMBER-1)
  78. *    AND CONTAINS THE ADDRESSES OF THE FUNCTION TABLES FOR
  79. *    EACH FLOATING-POINT OPERATION.
  80. *
  81. FUNTBL EQU *
  82.   ADRTBL ADDTBL,SUBTBL,MULTBL,DIVTBL,REMTBL
  83.  ADRTBL   CMPTBL,CMPTBL,CMPTBL,CMPTBL,SQRTBL
  84.  ADRTBL   INTTBL,FIXTBL,FIXTBL,MOVTBL,BNDTBL
  85.  ADRTBL   ABSTBL,NEGTBL
  86.  ADRTBL   DECBIN,FLOAT,FLOAT
  87.  PAGE
  88. *
  89. *
  90. *    ENTER HERE ON DISPAT CALL
  91. *
  92. *     FIRST GET THE ADDRESS OF THE TABLE FOR A PARTICULAR
  93. *    FLOATING-POINT COMMAND.
  94. *
  95. DISPAT EQU *
  96.   LDB FUNCT,U  GET FUNCTION CODE
  97.   ANDB #$3F    MASK OUT OPCODE NBR
  98.   IF B,EQ,#FCSUB
  99.     LDA  TYPE2,U      CHECK FOR A NAN
  100.     IF    A,NE,#TYNAN      IF ARG2 IS NOT A NAN
  101.       LDA ARG2,U
  102.       EORA #$80  FOR SUBTRACT, CHANGE SIGN
  103.       STA ARG2,U   AND ADD
  104.     ENDIF           ARG2 NOT A NAN
  105.   ENDIF
  106.   LEAY    FUNTBL,PCR
  107.   CMPB #FCNOJP    UNLESS OPERATOR HAS NO
  108.   BGE  DSJMP      TABLE
  109.   LDD    B,Y    OFFSET OF FUNCTION LOOKUP
  110.   LEAY    ROMSTR,PCR
  111.   LEAY    D,Y      ADDR IS NOW IN Y
  112. *
  113. *     NOW CREATE OFFSET IN OPERATION
  114. *   TABLE USING TYPES OF OPERANDS. IT IS
  115. *   ASSUMED THAT A NON-EXISTENT ARGUMENT
  116. *   HAS A TYPE OF ZERO.
  117. *
  118.   LDA TYPE1,U
  119.   LDB #5
  120.   MUL
  121.   ADDB TYPE2,U     OFFSET = TYP1*5 + TYP2
  122. *
  123. *     NOW GET PROCESSING ROUTINE OUT
  124. *    OF OPERATION TABLE AND JSR TO IT.
  125. *
  126. DSJMP LDD B,Y
  127.   LEAY ROMSTR,PCR
  128.   JSR  D,Y   JUMP TO PROCESSING SUBROUTINE
  129. *
  130. *   HERE IS COMMON RETURN POINT FOR  ALL
  131. *     PROCESSING ROUTINES.
  132. *
  133.   RTS
  134. *
  135.  PAGE
  136. *
  137. *******************************************
  138. *
  139. *     OPERATION DEFINITION TABLES
  140. *
  141. *     THE FOLLOWING TABLES CONTAIN ADDRESS
  142. *    OF THE SUBROUTINES THAT OPERATE ON
  143. *    ARGUMENTS OF VARIOUS TYPES. THE TABLES
  144. *    ARE ORGANIZED BY COLUMNS, I.E. EACH
  145. *    'ADRTBL' LINE IN A TABLE BELOW CORRESPONDS
  146. *    TO A ROW IN THE TABLE IN THE MOTOROLA SPEC.
  147. *
  148. MULTBL EQU *
  149.   ADRTBL FMUL,RTZERO,RTINF,RTAR2,FMUL
  150.   ADRTBL RTZERO,RTZERO,NAN9,RTAR2,RTZERO
  151.   ADRTBL RTINF,NAN9,RTINF,RTAR2,RTINF
  152.   ADRTBL RTAR1,RTAR1,RTAR1,RTDNAN,RTAR1
  153.   ADRTBL FMUL,RTZERO,RTINF,RTAR2,FMUL
  154. *
  155. *    TABLE FOR ADD/SUBTRACT
  156. *
  157. ADDTBL EQU *
  158. SUBTBL EQU *
  159.   ADRTBL FADD,FADD,RTAR2,RTAR2,FADD
  160.   ADRTBL FADD,CHKZER,RTAR2,RTAR2,RTAR2
  161.   ADRTBL RTAR1,RTAR1,CHKINF,RTAR2,RTAR1
  162.   ADRTBL RTAR1,RTAR1,RTAR1,RTDNAN,RTAR1
  163.   ADRTBL FADD,RTAR1,RTAR2,RTAR2,FADD
  164. *
  165. *   TABLE FOR DIVISION
  166. *
  167. DIVTBL EQU *
  168.   ADRTBL FDIV,DIVZER,RTZERO,RTAR2,NAN4
  169.   ADRTBL RTZERO,NAN4,RTZERO,RTAR2,RTZERO
  170.   ADRTBL RTINF,RTINF,NAN4,RTAR2,RTINF
  171.   ADRTBL RTAR1,RTAR1,RTAR1,RTDNAN,RTAR1
  172.   ADRTBL FDIV,DIVZER,RTZERO,RTAR2,NAN4
  173. *
  174. *    TABLE FOR REMAINDER
  175. *
  176. REMTBL EQU *
  177.   ADRTBL FREM,NAN10,RTAR1,RTAR2,NAN10
  178.   ADRTBL RTAR1,NAN10,RTAR1,RTAR2,NAN10
  179.   ADRTBL NAN10,NAN10,NAN10,RTAR2,NAN10
  180.   ADRTBL RTAR1,RTAR1,RTAR1,RTDNAN,RTAR1
  181.   ADRTBL FREM,NAN10,RTAR1,RTAR2,NAN10
  182. *
  183. *    TABLE FOR SQUARE ROOT
  184. *
  185. SQRTBL EQU *
  186.   ADRTBL FSQRT,RTAR2,SQINCK,RTAR2,NAN1
  187. *
  188. *   TABLE INTEGER PART
  189. *
  190. INTTBL EQU *
  191.   ADRTBL GETINT,RTAR2,RTAR2,RTAR2,GETINT
  192. *
  193. *   TABLE FOR ALL FOUR COMPARE OPERATIONS
  194. *
  195. CMPTBL EQU *
  196.   ADRTBL MAGCMP,MAGCMP,INFAR2,NANCMP,ARG2UN
  197.   ADRTBL MAGCMP,CMPZER,INFAR2,NANCMP,ARG2UN
  198.   ADRTBL INFAR1,INFAR1,CMPINF,NANCMP,INFAR1
  199.   ADRTBL NANCMP,NANCMP,NANCMP,NANCMP,NANCMP
  200.   ADRTBL ARG1UN,ARG1UN,INFAR2,NANCMP,BOTHUN
  201. *
  202. *   TABLE FOR FP-TO-BINARY INTEGER
  203. *
  204. FIXTBL EQU *
  205.   ADRTBL FFIX,FIXZER,BIGINT,FIXNAN,FFIX
  206. *
  207. *    TABLE FOR FP TO DECIMAL STRING CONVERSION
  208. *
  209. BNDTBL EQU *
  210.   ADRTBL BDCNVT,OUTNDC,OUTNDC,OUTNDC,BDCNVT
  211. *
  212. *     TABLE FOR MOVE OPERATION
  213. *
  214. MOVTBL EQU *
  215.   ADRTBL FMOVE,RTAR2,RTAR2,RTAR2,MOVUN
  216. *
  217. * TABLE FOR ABSOLUTE VALUE FUNCTION
  218. *
  219. ABSTBL EQU  *
  220.   ADRTBL  FABS,FABS,FABS,RTAR2,FABS
  221. *
  222. * TABLE FOR NEGATE FUNTION FUNCTION
  223. *
  224. NEGTBL EQU  *
  225.   ADRTBL  FNEG,FNEG,FNEG,RTAR2,FNEG
  226. *
  227.